package com.autoboot.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 自动启动配置属性
 * @author Maosw
 */
@Data
@Component
@ConfigurationProperties(prefix = "auto-boot")
public class AutoBootProperties {

    /**
     * 默认表名
     */
    private String defaultTable;

    /**
     * 数据库配置
     */
    private DbConfig db = new DbConfig();

    @Data
    public static class DbConfig {
        /**
         * 主键字段名
         */
        private String idField = "id";

        /**
         * 创建时间字段名
         */
        private String createTimeField = "create_time";

        /**
         * 更新时间字段名
         */
        private String updateTimeField = "update_time";

        /**
         * 是否自动填充时间
         */
        private boolean autoFillTime = true;

        /**
         * SQL日志配置
         */
        private SqlLogConfig sqlLog = new SqlLogConfig();

        /**
         * 排除的表名列表
         */
        private List<String> excludedTables;
    }

    @Data
    public static class SqlLogConfig {
        /**
         * 是否启用SQL日志
         */
        private boolean enabled = false;

        /**
         * SQL日志级别
         */
        private String level = "DEBUG";

        /**
         * 是否显示SQL参数
         */
        private boolean showParams = true;

        /**
         * 是否显示SQL执行时间
         */
        private boolean showExecutionTime = true;
    }
}
